﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace KPO_lab_02
{
    /*
     * Класс описывающий элемент таблицы идентификаторов
     */
    class Table
    {
        private Table minEl;
        private Table maxEl;
        public string sName { get; set; }

        public Table(string s)
        {
            sName = s;
        }

        /// <summary>
        /// Вставка элемента в дерево с увеличением счетчика сравнений
        /// </summary>
        /// <param name="sAdd"></param>
        /// <param name="iCount"></param>
        /// <returns></returns>
        public bool addElCount(string sAdd, ref int iCount)
        {
            iCount++;
            int i = String.Compare(sAdd, sName);
            if (i < 0)
            {
                if (minEl != null)
                {
                    return minEl.addElCount(sAdd, ref iCount);
                }
                else
                {
                    minEl = new Table(sAdd);
                    return true;
                }
            }
            else if (i > 0)
            {
                if (maxEl != null)
                {
                    return maxEl.addElCount(sAdd, ref iCount);
                }
                else
                {
                    maxEl = new Table(sAdd);
                    return true;
                }
            }
            else return false;
        }

        /// <summary>
        /// Поиск элемента в таблице с учетом кол-ва сравнений
        /// </summary>
        /// <param name="sN"></param>
        /// <param name="iCount"></param>
        public bool findElCount(string sN,ref int iCount)
        {
            iCount++;
            int i = String.Compare(sN, sName);
            if (i < 0)
            {
                if (minEl != null)
                {
                    return minEl.findElCount(sN, ref iCount);
                }
                else return false;
            }
            else if (i > 0)
            {
                if (maxEl != null)
                {
                    return maxEl.findElCount(sN, ref iCount);
                }
                else return false;
            }
            else return true;
        }
    }
}
